package com.example.learningnote.operate;

import android.util.Log;

import com.example.learningnote.bank.Bank;
import com.example.learningnote.bank.DrawAccount;
import com.example.learningnote.bank.SaveAccount;
import com.example.learningnote.basic.ArrayDemo;
import com.example.learningnote.basic.LearnDataType;
import com.example.learningnote.basic.LearnVariate;
import com.example.learningnote.basic.ListDemo;
import com.example.learningnote.basic.MyRunnable;

public class PrintLog {
    public void print(){
        LearnDataType.main();  // 数据类型
        LearnVariate.main();  // java中的变量
        ArrayDemo.main(); // 数组
        ListDemo.test();// 列表


        // MyThread mt1 = new MyThread("thread类创建线程1");
        // MyThread mt2 = new MyThread("thread类创建线程2");
        // mt1.start();
        // mt2.start();

        Log.d("Thread", "主线程 step1");
        int mainPriority = Thread.currentThread().getPriority(); //  获取线程的优先级 默认都是5
        MyRunnable mr = new MyRunnable("线程"); // 新线程
        Thread t = new Thread(mr);
        t.setPriority(Thread.MAX_PRIORITY); // 设置新线程优先级 假设注释了join代码块， 新线程的输出可能还是在 Log.d("Thread" ,"主线程 step2")后面的原因是：java的优先级设置只是给系统一个建议，要根据具体情况和CPU决定
        t.start(); // 开启新线程
        try {
            t.join(); // 如果调用join方法 会先执行该线程 与优先级无关
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        Log.d("Thread" ,"主线程 step2"); // 这里主线程和新线程执行顺序是随机的(不调用join方法时，即使设置了优先级，但是优先级只是给系统的建议，不能完全决定执行顺序)


        // 创建帐户，给定余额为1000  测试线程通信改为100
        Bank bank=new Bank("xiaomi",100);
        //创建线程对象
        SaveAccount sa=new SaveAccount(bank);
        DrawAccount da=new DrawAccount(bank);
        Thread save=new Thread(sa,"SaveAccount");
        Thread draw=new Thread(da,"DrawAccount");
        save.start();
        draw.start();
        // try {
        //     draw.join();
        //     save.join();
        // } catch (InterruptedException e) {
        //     // TODO Auto-generated catch block
        //     e.printStackTrace();
        // }
        Log.d("BANK" , bank.toString());
    }
}
